package com.erpoa.service;


import com.alibaba.fastjson.JSONObject;
import com.erpoa.entity.CarData;
import com.erpoa.entity.LogicBean;
import com.erpoa.entity.PackMessageByWuLiu;
import com.erpoa.utils.PDAException;
import com.erpoa.utils.RespPageEntity;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @description:
 * @author: jamin.chen
 * @createDate: 2020/1/7 10:12
 * @version: 1.0
 */
public interface CarDataService {

    /**
     *
     * @param carData
     * @return
     */
    RespPageEntity fetchCarData(CarData carData, Integer pageNum, Integer pageSize);

    int updTrayData(String carNo,List trayNos);

    int countTrayData(CarData carData);


    /**
     *
     * @param packMessage
     * @return
     */
    JSONObject checkWuLiuFaHuoByBarcodeFirst(PackMessageByWuLiu packMessage) throws PDAException, SQLException;

    /**
     *明细数据
     * @param packMessage
     * @return
     */
    List<JSONObject> requestDeliveryDetail(PackMessageByWuLiu packMessage);

    /**
     * 二次扫描及后续扫描
     * @param packMessage
     * @return
     */
    JSONObject checkWuLiuFaHuoByBarcode(PackMessageByWuLiu packMessage);

    /**
     * 托盘确认
     * @param packMessage
     * @return
     */
    JSONObject confirmTray(PackMessageByWuLiu packMessage);

    /**
     *删除托盘
     * @param packMessage
     * @return
     */
    JSONObject delTray(PackMessageByWuLiu packMessage);

    /**
     * 验证外箱条码是否存在
     * @param packMessage
     * @return
     */
    JSONObject checkPckBarCode(PackMessageByWuLiu packMessage);

    /**
     * 零散箱自动新增托盘
     * @param packMessage
     * @return
     */
    JSONObject antoCreateWithSurplus(PackMessageByWuLiu packMessage);


    /**
     * 获取需要手动拼箱的数据
     * @param packMessage
     * @return
     */
    List<JSONObject> getComfirmLcl(PackMessageByWuLiu packMessage);

    /**
     * 手动拼箱提交
     * @param packMessage
     * @return
     */
    JSONObject submitComfirmLcl(PackMessageByWuLiu packMessage);

    /**
     *手动更新当前客户数据
     * @param packMessage
     * @return
     */
    JSONObject updateDataByCustName(PackMessageByWuLiu packMessage);

    /**
     *手工确认sku
     * @param packMessage
     * @return
     */
    JSONObject pckConfirm(PackMessageByWuLiu packMessage);

    /**
     * 查询未打印的托盘
     * @param packMessage
     * @return
     */
    JSONObject trayConfirm(PackMessageByWuLiu packMessage);


    /**
     * 获取未复核列表
     * @param packMessage
     * @return
     */
    List<JSONObject> descGet(PackMessageByWuLiu packMessage);

    /**
     * @param packMessage
     * @return
     */
    List<Map> selectSname(PackMessageByWuLiu packMessage);

    /**
     * @param packMessage
     * @return
     */
    List<Map> selectTray(PackMessageByWuLiu packMessage);

    /**
     * @param packMessage
     */
    void checkWuliuBarCodeFlag(PackMessageByWuLiu packMessage);

    /**
     * @param packMessage
     * @return
     */
    List<HashMap> countAllDescBySname(PackMessageByWuLiu packMessage);

    /**
     * @param packMessage
     * @return
     */
    LogicBean counthasscanDEtail(PackMessageByWuLiu packMessage);

    /**
     * @param packMessage
     * @return
     */
    List<HashMap> selectTrayDetailByTrayNo(PackMessageByWuLiu packMessage);

    /**
     * @param packMessage
     * @return
     */
    JSONObject createTrayNumber(PackMessageByWuLiu packMessage);

    /**
     * @param packMessage
     * @return
     */
    HashMap huizongcustName(PackMessageByWuLiu packMessage);


    public void wuliuRedis(String id);

    public void selectoccode(List<LogicBean> logicBeans);


    String compensateTrayNo(String trayNumber);


    void compensateTrayNotask();
}
